<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        new Promise(resolve => {
            console.log(1)  // 同步   1 
            setTimeout(() => {
                resolve('')
                console.log(2)    // 宏任务- 1 
            }, 1000);
        }).then((res) => {
            // 没有resolve() ==> 不会把then回调放到微任务队列
            console.log(3)  // 这个时候，并没有把回调放到微任务队列中 
        })


        new Promise(resolve => {
            console.log(1)
            setTimeout(() => {

                resolve('') // 在本轮事件循环 把 .then()回到，放到微任务队列  // 微任务 1 ==> log3 
                console.log(2)

                setTimeout(() => {
                    console.log(4)  // 宏任务 - 1 
                }, 1000);
            }, 1000);
        }).then((res) => {
            console.log(3)
        })

        // log 1  
        // log 2
        // log 3
        // log 4

        // 立即 resolved 的 Promise 是在本轮事件循环的末尾执行，总是晚于本轮循环的同步任务。
    </script>
</body>

</html>